A large percentage of personal computers presently produced are operated by means of pointer devices. A pointer device consists of a hardware element and a software element. The hardware element is a device which generally is movable or includes a movable component, or which comprises other means for generating a motion, and the software element comprises an index or cursor generated and controlled by a program, which index moves over the computer display or screen in response to the displacements of the movable hardware element device or of a movable component thereof or to other motion generating commands of the hardware element--hereinafter "mechanical control displacements" or, briefly, "the control displacements". Said response, however, exists only as far as the index displacements are contained within a certain field, which can be called "the pointer active field", the dimensions of which are generally determined by those of the computer display or screen or of the part thereof within which the index is visible. Thus, when the control displacements in a certain direction have brought the index to the border line of the computer display, any further displacement of the movable device or component of the hardware element in the same direction causes no further response of the index. Hereinafter, when mention is made of index (or cursor) displacements or of control displacements, it should be understood that they are displacements within the pointer active field, unless otherwise specified. Further, it should be kept in mind that only the index displacements are directly relevant to the computer functions, and, for instance, determine what operation should be carried out or where it should be carried out. Therefore, whenever mention is made of pointer displacements, it should be understood that displacements of the pointer index (or cursor) are meant, unless otherwise specified.
Many kinds of pointer devices are known in the art and the present invention applies to all, although it will be particularly described with reference to a most common pointer device, viz. to a mouse. A mouse is a device which can be displaced by sliding it over a plane surface. Each displacement causes a rolling of a sphere, mounted in the mouse, over said plane surface, and therefore a rotation of the sphere with respect to the body of the mouse, which rotation, through a mechanism provided in the mouse, measures the mouse displacements along two different coordinates, viz. X- and Y-displacements. Digital signals representing displacements are sent to the computer by means of a conductor connected to an input port of this latter. An index (or cursor), which represents the mouse, is visualized by the computer software on the computer display. It appears, when the computer is switched on, in an initial or origin position, which may be called "the mouse origin point", and subsequently moves from it, synchronously with the motions of the mouse. The positions of the mouse index are defined by Cartesian coordinates--hereinafter "X and Y mouse index coordinates", or, briefly, "X and Y mouse coordinates", and its displacements by changes in the value of those coordinates. The minimum such changes to which the computer is sensitive and which will cause an actual motion of the mouse index, as small as it may be, will be called "elementary X and Y coordinate displacements". A pair (X,Y) of elementary coordinate displacements, occurring concurrently, define an elementary vector displacement. The computer applies each elementary X and Y displacement to initial or origin coordinates X.sub.0 and Y.sub.0 of the mouse index to calculate the present or actual mouse index coordinates. When a command is given--normally be means of what can be called a "mouse event", e.g. the actuation of a mouse key--to perform an operation connected to the mouse, the operation which corresponds to the actual mouse index coordinates is performed by the computer. Hereinafter it will be assumed that X.sub.0 =Y.sub.0 =0. If different values were attributed to the initial coordinates, they could be easily taken into account.
Some computers are controlled by means of a mouse that is stationary, and may be or not be mounted on and integral with the computer, and is provided with a sphere--which in such cases is called "trackball"--directly actuated by the operator's hand. Rotation of the sphere causes displacement of the mouse index, in the same manner set forth hereinbefore. While in the case of the movable mouse the control displacements, measured by the rotation of the sphere with respect to the body of the mouse, are caused by the sliding of the mouse itself over a plane surface, in the case of a stationary mouse the rotation of the trackball is caused directly by the operator's hand. For the purpose of this description, it is convenient to consider what may be called "virtual" mouse displacements, viz. the displacements of a movable mouse that would cause its sphere to rotate by the same angles by which the trackball actually rotates, and consider them as the control displacements.
Other pointer devices have hardware elements that do not comprise spheres, but are based on the linear motion of a movable component over a surface that is sensitive to such a motion. The linear displacements of said movable component are the control displacements, and they cause corresponding displacements of a pointer index, which constitutes a software element analogous to that of a mouse device. Said motion sensitive surface may be separate from the computer or may even be the computer display itself. Examples of such pointers are Light Pens, Touch Screens, Touch Pads, Sense Pens, Digitizers. Each of them comprises a movable component that is displaced over a stationary surface, which in the case of the first two is a special computer display, while in the case of the others is a separate, dedicated surface. In some cases, the operator's finger might act as the movable component. All of them, as well as the mouse devices, generate, with the displacements of the movable component, digital information that is transmitted to the computer: therefore this invention is equally applicable to all.
In the following description, reference will be made to movable mouse devices, but only for purposes of example, as what is essential to the invention is the existence of pointer index displacements corresponding to pointer control displacements, and the mechanical nature of said control displacements and their mechanical causes are irrelevant. Further, the correspondence of said index displacements and said control displacements is essentially the same in all pointer devices, so that the description of the invention with reference to movable mouse devices can be applied immediately, by any skilled person, to other types of pointers. The term "mouse", therefore, as used in this description and claims, should always be understood as comprising any type of pointers, unless specific reference is made to a structure exclusive to mouse devices, and even then, such reference is to be considered as made only for illustrative and not for limitative purposes.
In normal mouse or generally pointer operation, as is well known to skilled persons, the pointer is connected to the computer through an electronic circuit interface, that can be a special one, viz. delivered together with the pointer, or may be a standard interface used in the computer for general purposes, for instance, a serial interface. In the case of a PC, such electronic circuit may be an Asynchronous Interface (AI/F), e.g. that known as RS-232 Standard. When any action is carried out by means of the pointer, viz. a pointer (mouse) event occurs, e.g., a mouse key is actuated or a mouse is displaced, the interface communicates this fact to the computer CPU by means of a signal, which is known as the Interrupt Request Signal (hereinafter IRQ) and is accompanied by data transmitted by the mouse itself to the interface controller input register. The CPU, when it receives the IRQ, interrupts the process that it was carrying out and starts a software routine, which is called the Interrupt Service Routine (hereinafter ISR) and which is soft-wired to the Interrupt Vector (IV), a region in the Random Access Memory (RAM) which contains the addresses of the service routines that are resident in memory. The main role of the ISR is to read the data from the interface to the pointer, to interpret it and to store it in a public domain of the RAM for future use. A different ISR, and associated routines, is required for each type of pointer and is installed in the computer memory by loading a software driver, generally provided by the mouse manufacturer and embodied in a diskette. Some programs or operating systems, such as Windows, include drivers for a number of mouse devices, and if a mouse is to be used that is not one of them, the corresponding driver must be installed during set-up.
For the purpose of permitting communication with the pointer, a Service Library (hereinafter SL) is also loaded by the mouse driver and is soft-wired to a public software interrupt number of the IV. The SL comprises a number of utility functions. One of them is the connection of the User Mask Routine (UMR) address to the ISR. When a pointer event, such as a unit displacement of its mobile part or the actuation of a pointer button occurs, the ISR reads the data from the interface and asks whether a UMR is present. If the answer is positive and the event can be "masked on", viz. accepted, the control of the computer is passed to the user program, by means of the UMR, which now communicates freely with the pointer through the functions of the SL. When the event has been completed, the control is returned to the process which was interrupted by the IRQ. The above well known features of pointer operation should be kept in mind for a complete understanding of the embodiments of the invention to be described. Said features apply to stationary mouse devices as well, and essentially to all pointer devices, with variations that are well known and understood by skilled persons.
The operation of a computer by means of a pointer, and particularly of a mouse, often requires several displacements of the pointer index or cursor, in order to position it at certain zones of a Tool Bar and/or of an opened window and there to actuate it to cause it to transmit to the computer the desired commands. When an operation is to be carried out several times in a computer session, the repetition of the same pointer displacements and commands is troublesome and time consuming. Macro recorder routines, that are available in various forms in computer software, are not fully satisfactory, because on the one hand they are complex and involve a dialogue between computer and operator, and, on the other hand, they require the operator to learn many different actions that are not so frequently used as to be easily remembered Furthermore, they are not always time saving and are limited as to the operations that they permit to perform. Finally, they are software-dependent and therefore not universally applicable.
It is an object of this invention to facilitate the operation of computers by permitting to carry out selected operations in a quicker and easier manner.
It is another object of this invention so to facilitate the operation of a pointer controlled computer, while using a pointer that is completely or nearly conventional in structure.
It is a further object of the invention to permit to select operations in a pointer controlled computer without having repeatedly to displace the pointer or a movable part thereof in order to select the operation
It is a still further object of the invention to permit to achieve the aforesaid objects, while selecting the desired operations and changing said selection whenever desired.
It is a still further object of this invention to provide a method for operating a pointer controlled computer which renders the operation of the computer quicker, easier and more versatile, by particularly simple and economical means.
It is a still further object of this invention to provide a method for operating a computer controlled by a pointer that is completely or nearly conventional in structure, which method permits to carry out selected operations in a quicker and easier manner.
It is a still further object of this invention to provide a method for operating a computer and/or an improved pointer structure and/or improved interfaces between pointer and computer, which permit repeatedly to carry out by one or two commands a sequence of a plurality of operations.
It is a still further object of this invention to provide a method for operating a computer and/or an improved pointer structure and/or improved interfaces between pointer and computer, which permit to repeat any number of times a selected operation or sequence of operations.
It is a still further object of this invention to achieve the aforesaid objects with respect to a pointer that is a mouse device.
It is a still further object of this invention to provide a method for operating a combination of a serial device and a computer.
It is a still further object of this invention to provide an improved interface between a serial device and a computer.
It is a still further object of this invention to provide an improved combination of a serial device, a computer and an interface between them.
It is a still further object of this invention to facilitate and accelerate carrying out complex computer operations, e.g. as in graphic work in CAD/CAM methods, and the like.
It is a still further object of this invention to provide an improved computer method and apparatus which permits to register and exactly to reproduce pointer index paths.
It is a still further object of this invention to provide an improved computer method and apparatus which permits to register and exactly to reproduce geometric shapes and configurations of any complexity.
It is a still further object of this invention to provide an improved computer method and apparatus which is independent of the particular computer to which it is applied and to the software by which it is operated.
It is a still further object of this invention to achieve the aforementioned objects without interfering with the computer software.
Other objects and advantages of the invention will become apparent as the description proceeds.